<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

if ( ! function_exists('cutstr'))
{
    function cutstr($string,$len,$ellipsis="...",$encoding='utf8')
    {
        if(mb_strlen($string,$encoding)<=$len)
        {
            return $string;
        }
        else
        {
            return mb_substr($string,0,$len,$encoding).$ellipsis;
        }
    }
}
/**
 * 生成订单号 
 */
if(!function_exists('generate_ordersn')){
    function generate_ordersn() {
        $year_code = array('A','B','C','D','E','F','G','H','I','J');
        return $order_sn = $year_code[intval(date('Y'))-2012].strtoupper(dechex(date('m'))).date('d').substr(time(),-5).substr(microtime(),2,5).sprintf(rand(0,99));                
    }
}
if(!function_exists('imgFormat')){
    function imgFormat($imgurl) {
        $result = $imgurl?OSSHOST.$imgurl:'';
        if(strpos($imgurl,"http") !== false){
            $result = $imgurl;
        }
        return $result;
                 
    }
}

if(!function_exists('str_replace_once'))
{
    function str_replace_once($needle, $replace, $haystack) {
        $pos = strpos($haystack, $needle);
        if ($pos === false) {
            return $haystack;
        }
        return substr_replace($haystack, $replace, $pos, strlen($needle));
    }
}


//管理员后台消息页面
if(!function_exists('show_message'))
{
    function show_message($message='', $template = 'message')
    {   
        include(ADMINVIEWPATH.$template.'.php');
        exit();
    }
}
/**
 * 检查字符串是中文还是字母
 * @author  jackwoo
 * @param   string  $str   比对字母
 * @return  string
 */
if(!function_exists('checkStr'))
{
    function checkStr($str="")
    {
        $output='';
        $a=preg_match('/['.chr(0xa1).'-'.chr(0xff).']/', $str);
        $b=preg_match('/[a-zA-Z]/', $str);
        if($a && !$b){ $output=1;}
        elseif(!$a && $b){ $output=2;}
        return $output;
    }
}



/**
 *  时间转换
 * @param type $timestamp
 * @return type
 */
if (!function_exists('humanDate')){
    function humanDate($timestamp) {
        $seconds = time() - $timestamp;
        if($seconds > 86400) {
            return date('Y-n-j',$timestamp);
        } elseif($seconds > 3600) {
            return ceil($seconds / 3600).'小时前';
        } elseif($seconds > 60) {
            return ceil($seconds / 60).'分钟前';
        } else {
            return $seconds.'秒前';
        }
    }
}
if (!function_exists('check_authorize')){
    function check_authorize($before,$after,$model)
    {
        $result = false;
        if(in_array($model,$_SESSION['power'][$before."Manager"][$before."Manager".$after]))
        {
            $result = true;    
        }
        
        return $result;

    }
}



if ( ! function_exists('infiniteAssort'))
{
    /**
     * 对二维数组进行无限极分类函数(一定要存在父子关系)
     * 调用实例
     * $data=array(
     *      array('id'=>1,name=>'分类1','parent'=>0),
     *      array('id'=>2,name=>'分类2','parent'=>0),
     *      array('id'=>3,name=>'分类3','parent'=>0),
     *      array('id'=>4,name=>'分类4','parent'=>1),
     *      array('id'=>5,name=>'分类5','parent'=>1),
     *      array('id'=>6,name=>'分类6','parent'=>2),
     *      array('id'=>7,name=>'分类7','parent'=>3),
     *      array('id'=>8,name=>'分类8','parent'=>7)
     * );
     * infiniteAssort($data,0,0,"parent","id",$result,"p_level");
     * print_r($result);
     * 
     * @param array   $array            二维数组
     * @param int     $parent           父类ID    
     * @param int     $level            层次号
     * @param string  $parentKeyName    父类键名    
     * @param string  $sonKeyName       子类键名
     * @param mixed   &$result          保存最终结果
     */
    function  infiniteAssort($array,$parent,$level,$parentKeyName,$sonKeyName,&$result,$levelName="level",$mode=1,$fields="")
    {
        if($mode==1)
        {
            for($i=0;$i<count($array);$i++)
            {
                if($array[$i][$parentKeyName]==$parent)
                {
                    $array[$i][$levelName]=$level;
                    $sub[]=$array[$i];
                }
            }
            if(isset($sub) && count($sub)>0)
            {
                for($j=0;$j<count($sub);$j++)
                {
                    $result[]=$sub[$j];
                    infiniteAssort($array,$sub[$j][$sonKeyName],$level+1,$parentKeyName,$sonKeyName,$result,$levelName,$mode,$fields);
                }
            }
        }
        else if($mode==2)
        {
            for($i=0;$i<count($array);$i++)
            {
                if($array[$i][$parentKeyName]==$parent)
                {
                    $array[$i][$levelName]=$level;
                    $sub[]=$array[$i];
                }
            }
            if(isset($sub) && count($sub)>0)
            {
                for($j=0;$j<count($sub);$j++)
                {
                    if(!empty($fields))
                    {
                        foreach($fields as $k=>$v)
                        {
                            $temp[$v]=$sub[$j][$k];
                        }
                        $result["children"][]=$temp;
                    }
                    else
                    {
                        $result["children"][]=$sub[$j];
                    }
                    
                    infiniteAssort($array,$sub[$j][$sonKeyName],$level+1,$parentKeyName,$sonKeyName,$result["children"],$levelName,$mode,$fields);
                }
            }
        }
    }
}


